package com.example.work.check;


import com.example.work.Excel.DatabaseAssetXlsx;
import com.example.work.Excel.DatabaseAssetXlsx;
import com.example.work.Excel.ServerAssetXlsx;

import java.util.List;
import java.util.Map;

/**
 * 资产导入使用示例
 */
public class AssetImportExample {
    
    public static void main(String[] args) {
        // 创建导入服务实例
        AssetImportService importService = new AssetImportService();
        
        // 示例1: 导入单个文件
        System.out.println("=== 示例1: 导入单个文件 ===");
        String singleFilePath = "/path/to/your/excel/files/1103470821239820288-数据库.xlsx";
        boolean success = importService.importSingleFile(singleFilePath);
        if (success) {
            System.out.println("单个文件导入成功");
        } else {
            System.out.println("单个文件导入失败");
        }
        
        // 示例2: 批量导入目录下的所有Excel文件
        System.out.println("\n=== 示例2: 批量导入所有文件 ===");
        String directoryPath = "/path/to/your/excel/files/";
        int importedCount = importService.importFromDirectory(directoryPath);
        System.out.println("批量导入完成，成功导入 " + importedCount + " 个文件");
        
        // 示例3: 查看统计信息
        System.out.println("\n=== 示例3: 查看统计信息 ===");
        importService.printStatistics();
        
        // 示例4: 获取具体类型的资产列表
        System.out.println("=== 示例4: 获取具体类型的资产列表 ===");
        
        // 获取数据库资产列表
        List<DatabaseAssetXlsx> databaseAssets = importService.getDatabaseAssetList();
        System.out.println("数据库资产数量: " + databaseAssets.size());
        if (!databaseAssets.isEmpty()) {
            DatabaseAssetXlsx firstDatabase = databaseAssets.get(0);
            System.out.println("第一个数据库资产信息:");
            System.out.println("  资产编号: " + firstDatabase.getAssetNumber());
            System.out.println("  资产名称: " + firstDatabase.getAssetName());
            System.out.println("  数据库类型: " + firstDatabase.getDatabaseType());
            System.out.println("  IP地址: " + firstDatabase.getAssetIp());
        }
        
        // 获取服务器资产列表
        List<ServerAssetXlsx> serverAssets = importService.getServerAssetList();
        System.out.println("\n服务器资产数量: " + serverAssets.size());
        if (!serverAssets.isEmpty()) {
            ServerAssetXlsx firstServer = serverAssets.get(0);
            System.out.println("第一个服务器资产信息:");
            System.out.println("  资产编号: " + firstServer.getAssetNumber());
            System.out.println("  资产名称: " + firstServer.getAssetName());
            System.out.println("  操作系统: " + firstServer.getOperatingSystemName());
            System.out.println("  CPU型号: " + firstServer.getCpuModel());
        }
        
        // 示例5: 获取所有类型的统计信息
        System.out.println("\n=== 示例5: 详细统计信息 ===");
        Map<String, Integer> statistics = importService.getAssetCountStatistics();
        for (Map.Entry<String, Integer> entry : statistics.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue() + " 条记录");
        }
        
        // 示例6: 清空所有列表（在重新导入之前）
        System.out.println("\n=== 示例6: 清空所有列表 ===");
        importService.clearAllLists();
        importService.printStatistics(); // 再次打印统计信息，确认已清空
    }
    
    /**
     * 实际使用示例：从特定目录导入所有文件
     */
    public static void importAllFilesFromDirectory(String directoryPath) {
        AssetImportService importService = new AssetImportService();
        
        try {
            // 批量导入
            int successCount = importService.importFromDirectory(directoryPath);
            
            if (successCount > 0) {
                System.out.println("导入成功！");
                importService.printStatistics();
                
                // 使用导入的数据做业务处理
                processImportedData(importService);
            } else {
                System.out.println("没有成功导入任何文件。");
            }
            
        } catch (Exception e) {
            System.err.println("导入过程中发生错误: " + e.getMessage());
            e.printStackTrace();
        }
    }
    
    /**
     * 处理导入的数据（示例业务逻辑）
     */
    private static void processImportedData(AssetImportService importService) {
        System.out.println("\n=== 开始处理导入的数据 ===");
        
        // 处理数据库资产
        List<DatabaseAssetXlsx> databases = importService.getDatabaseAssetList();
        System.out.println("处理 " + databases.size() + " 个数据库资产...");
        for (DatabaseAssetXlsx db : databases) {
            // 这里可以添加你的业务逻辑，比如：
            // 1. 数据校验
            // 2. 存储到数据库
            // 3. 发送通知等
        }
        
        // 处理服务器资产
        List<ServerAssetXlsx> servers = importService.getServerAssetList();
        System.out.println("处理 " + servers.size() + " 个服务器资产...");
        for (ServerAssetXlsx server : servers) {
            // 你的服务器资产处理逻辑
        }
        
        // 处理其他类型的资产...
        
        System.out.println("数据处理完成。");
    }
}